package com.zrrd.javaSEPlus._04_reflect;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;

/**
 * @author WanJl
 * @version 1.0
 * @title ReflectField02
 * @description 通过反射，操作Field对象为成员变量赋值
 * @create 2023/11/12 16:16
 */
public class ReflectField02 {
    public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException, NoSuchMethodException, InstantiationException {
        //获取Class对象--类的对象
        Class<Student> clazz = Student.class;
        //获取Field对象--属性的对象
        Field age = clazz.getDeclaredField("age");
        Field name = clazz.getDeclaredField("name");
        //操作属性的时候，才可以使用暴力反射，取消访问检查。
        age.setAccessible(true);
        //通过Class对象，创建一个Student对象
        Student student = clazz.newInstance();
        //为student对中的"age"属性进行复制。
        age.set(student,15);

        name.setAccessible(true);
        name.set(student,"张三");
        System.out.println(student);

    }
}
